package org.lw.controller;

import org.lw.Entity.User;
import org.lw.response.ApiResponse;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

import java.util.NoSuchElementException;

@RestController//@Controller + @ResponseBody通常用来返回JSON数据或者是XML数据。
@RequestMapping("/hello")//@RequestMapping(标注映射路径)
public class HelloController {
    @GetMapping("/spring")
   public String  saySpring(){

        return "springMVC";
   }
    @GetMapping("/user/{id}/{name}")
    public ResponseEntity<ApiResponse<User>> sayUser(@PathVariable("id") int id,@PathVariable("name") String name){
        System.out.println(id+name);
        if (name.equals("liuwei"))
           return ResponseEntity.ok().body(new ApiResponse<>(200,"返回给前端的数据",new User(name,id)));
        else
            throw  new NoSuchElementException("No Such User");
    }
    @PostMapping("/user")
    public ResponseEntity<ApiResponse<User>> sayUser2(@RequestBody User user){
        System.out.println(user);
        return ResponseEntity.ok(new ApiResponse<>(200,"success",user));
    }

}
//GET，POST，PUT，DELETE就对应着对这个资源的查 ，改 ，增 ，删 4个操作。
//1、Get 向特定资源发出请求（请求指定页面信息，并返回实体主体）
//2、Post 向指定资源提交数据进行处理请求（提交表单、上传文件），又可能导致新的资源的建立或原有资源的修改
//3、Put 向指定资源位置上上传其最新内容（从客户端向服务器传送的数据取代指定文档的内容）
//4、Head 与服务器索与get请求一致的相应，响应体不会返回，获取包含在小消息头中的原信息（与get请求类似，返回的响应中没有具体内容，用于获取报头）
//5、Delete 请求服务器删除request-URL所标示的资源*（请求服务器删除页面）
//6、opions 返回服务器针对特定资源所支持的HTML请求方法 或web服务器发送*测试服务器功能（允许客户端查看服务器性能）